/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package org.osiris.persistence;

import java.io.Serializable;
import java.util.Date;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 *
 * @author amartinez
 */
@Entity
@Table(name = "Peticioncambio")
@NamedQueries({@NamedQuery(name = "Peticioncambio.findAll", query = "SELECT p FROM Peticioncambio p"), @NamedQuery(name = "Peticioncambio.findByIdPeticion", query = "SELECT p FROM Peticioncambio p WHERE p.idPeticion = :idPeticion"), @NamedQuery(name = "Peticioncambio.findByDescripcion", query = "SELECT p FROM Peticioncambio p WHERE p.descripcion = :descripcion"), @NamedQuery(name = "Peticioncambio.findByEsfuerzo", query = "SELECT p FROM Peticioncambio p WHERE p.esfuerzo = :esfuerzo"), @NamedQuery(name = "Peticioncambio.findByMotivo", query = "SELECT p FROM Peticioncambio p WHERE p.motivo = :motivo"), @NamedQuery(name = "Peticioncambio.findByAutor", query = "SELECT p FROM Peticioncambio p WHERE p.autor = :autor"), @NamedQuery(name = "Peticioncambio.findByOrigen", query = "SELECT p FROM Peticioncambio p WHERE p.origen = :origen"), @NamedQuery(name = "Peticioncambio.findByFechaalta", query = "SELECT p FROM Peticioncambio p WHERE p.fechaalta = :fechaalta"), @NamedQuery(name = "Peticioncambio.findByFecharesolucion", query = "SELECT p FROM Peticioncambio p WHERE p.fecharesolucion = :fecharesolucion")})
public class Peticioncambio implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "idPeticion")
    private Long idPeticion;
    @Basic(optional = false)
    @Column(name = "Descripcion")
    private String descripcion;
    @Basic(optional = false)
    @Column(name = "Esfuerzo")
    private double esfuerzo;
    @Basic(optional = false)
    @Column(name = "Motivo")
    private String motivo;
    @Basic(optional = false)
    @Column(name = "Autor")
    private String autor;
    @Basic(optional = false)
    @Column(name = "Origen")
    private String origen;
    @Basic(optional = false)
    @Column(name = "Fecha_alta")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechaalta;
    @Basic(optional = false)
    @Column(name = "Fecha_resolucion")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fecharesolucion;
    
    @JoinTable(name = "Recursosdepeticion", joinColumns = {@JoinColumn(name = "idPeticion", referencedColumnName = "idPeticion")}, inverseJoinColumns = {@JoinColumn(name = "idRecurso", referencedColumnName = "idRecurso")})
    @ManyToMany(fetch = FetchType.LAZY)
    private List<Recurso> recursoList;

    
    @OneToMany(mappedBy = "peticioncambioOrigen", fetch = FetchType.LAZY)
    private List<Modificaciondeec> modificaciondeecList;
    @OneToOne(cascade = CascadeType.ALL, mappedBy = "peticioncambio", fetch = FetchType.LAZY)
    private Impactocambio impactocambio;
    @JoinColumn(name = "Incertidumbre", referencedColumnName = "idIncertidumbre")
    @ManyToOne(optional = false, fetch = FetchType.LAZY)
    private Incertidumbre incertidumbre;
    @JoinColumn(name = "Estado", referencedColumnName = "idEstadoRequisito")
    @ManyToOne(optional = false, fetch = FetchType.LAZY)
    private Estadorequisito estado;
    @JoinColumn(name = "Prioridad", referencedColumnName = "idPrioridadRequisito")
    @ManyToOne(optional = false, fetch = FetchType.LAZY)
    private Prioridadrequisito prioridad;
    @JoinColumn(name = "Complejidad", referencedColumnName = "idComplejidadRequisito")
    @ManyToOne(optional = false, fetch = FetchType.LAZY)
    private Complejidadrequisito complejidad;

    public Peticioncambio() {
    }

    public Peticioncambio(Long idPeticion) {
        this.idPeticion = idPeticion;
    }

    public Peticioncambio(Long idPeticion, String descripcion, double esfuerzo, String motivo, String autor, String origen, Date fechaalta, Date fecharesolucion) {
        this.idPeticion = idPeticion;
        this.descripcion = descripcion;
        this.esfuerzo = esfuerzo;
        this.motivo = motivo;
        this.autor = autor;
        this.origen = origen;
        this.fechaalta = fechaalta;
        this.fecharesolucion = fecharesolucion;
    }

    public Long getIdPeticion() {
        return idPeticion;
    }

    public void setIdPeticion(Long idPeticion) {
        this.idPeticion = idPeticion;
    }

    public String getDescripcion() {
        return descripcion;
    }

    public void setDescripcion(String descripcion) {
        this.descripcion = descripcion;
    }

    public double getEsfuerzo() {
        return esfuerzo;
    }

    public void setEsfuerzo(double esfuerzo) {
        this.esfuerzo = esfuerzo;
    }

    public String getMotivo() {
        return motivo;
    }

    public void setMotivo(String motivo) {
        this.motivo = motivo;
    }

    public String getAutor() {
        return autor;
    }

    public void setAutor(String autor) {
        this.autor = autor;
    }

    public String getOrigen() {
        return origen;
    }

    public void setOrigen(String origen) {
        this.origen = origen;
    }

    public Date getFechaalta() {
        return fechaalta;
    }

    public void setFechaalta(Date fechaalta) {
        this.fechaalta = fechaalta;
    }

    public Date getFecharesolucion() {
        return fecharesolucion;
    }

    public void setFecharesolucion(Date fecharesolucion) {
        this.fecharesolucion = fecharesolucion;
    }

    public List<Recurso> getRecursoList() {
        return recursoList;
    }

    public void setRecursoList(List<Recurso> recursoList) {
        this.recursoList = recursoList;
    }

    public List<Modificaciondeec> getModificaciondeecList() {
        return modificaciondeecList;
    }

    public void setModificaciondeecList(List<Modificaciondeec> modificaciondeecList) {
        this.modificaciondeecList = modificaciondeecList;
    }

    public Impactocambio getImpactocambio() {
        return impactocambio;
    }

    public void setImpactocambio(Impactocambio impactocambio) {
        this.impactocambio = impactocambio;
    }

    public Incertidumbre getIncertidumbre() {
        return incertidumbre;
    }

    public void setIncertidumbre(Incertidumbre incertidumbre) {
        this.incertidumbre = incertidumbre;
    }

    public Estadorequisito getEstado() {
        return estado;
    }

    public void setEstado(Estadorequisito estado) {
        this.estado = estado;
    }

    public Prioridadrequisito getPrioridad() {
        return prioridad;
    }

    public void setPrioridad(Prioridadrequisito prioridad) {
        this.prioridad = prioridad;
    }

    public Complejidadrequisito getComplejidad() {
        return complejidad;
    }

    public void setComplejidad(Complejidadrequisito complejidad) {
        this.complejidad = complejidad;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (idPeticion != null ? idPeticion.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Peticioncambio)) {
            return false;
        }
        Peticioncambio other = (Peticioncambio) object;
        if ((this.idPeticion == null && other.idPeticion != null) || (this.idPeticion != null && !this.idPeticion.equals(other.idPeticion))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "org.osiris.persistence.Peticioncambio[idPeticion=" + idPeticion + "]";
    }

}
